/* 
  context.pinia // 用 `createPinia()` 创建的 pinia。 
  context.app // 用 `createApp()` 创建的当前应用(仅 Vue 3)。
  context.store // 该插件想扩展的 store
  context.options // 定义传给 `defineStore()` 的 store 的可选对象。
*/

// 专用于 本地浏览器缓存存储
const saveSessionStorage = (storeid,state, stateProps) => {
  // {'my': state}
  // {...state}

  let saveObj = stateProps.reduce( (saveobject, prop) => {
    saveobject[prop] = state[prop];
    console.log('saveobject, prop, state=>',saveobject, prop, state[prop]);
    return saveobject;
  } ,{});
  window.sessionStorage.setItem(storeid,JSON.stringify(saveObj));

}

export const saveLocalState = context => {
  console.log('saveLocalState context=>', context);

  // 设置 state  订阅(监听 state 变化)
  context.store.$subscribe((mutation, state)=>{
    console.log('pinia plugin $subscribe mutation =>', mutation);
    console.log('pinia plugin $subscribe state =>', state);
    // 一旦 state 属性值发生改变 本地缓存进行实时存储
    saveSessionStorage(context.store.$id,state, context.options.persistence.state);
  });
}